package com.spider.spiderflowable.business.entity.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Date;
import lombok.Data;

/**
 * @author xiong.bo
 * @version 1.0
 * @date 2025/4/20 4:36 下午
 */
@Data
public class FlowApprovalRequestVo {


  private Long id;

  private Long tenantId;

  @Schema(description = "申请编号")
  private String requestNo;

  @Schema(description = "申请类型(工单关闭/请假/外出等)")
  private String requestType;

  @Schema(description = "申请类型(工单关闭/请假/外出等)")
  private String requestTypeName;

  @Schema(description = "流程实例ID")
  private String processInstanceId;

  @Schema(description = "流程实例ID")
  private String taskInstanceId;

  @Schema(description = "流程定义key")
  private String processDefinitionKey;

  @Schema(description = "任务定义key")
  private String taskDefinitionKey;

  @Schema(description = "申请标题")
  private String title;

  @Schema(description = "申请人ID")
  private Long applicantId;

  @Schema(description = "申请人姓名")
  private String applicantName;

  @Schema(description = "申请人部门ID")
  private Long departmentId;

  @Schema(description = "申请人部门名称")
  private String departmentName;

  @Schema(description = "申请内容")
  private String requestContent;

  @Schema(description = "附件URL，多个用逗号分隔")
  private String attachment;

  @Schema(description = "状态（DRAFT:待提交，PENDING:审批中，APPROVED:已通过，REJECTED:已拒绝，CANCELLED:已撤回）")
  private String approvalStatus;

  @Schema(description = "当前审批人ID(指定人审批)")
  private Long currentApproverId;

  @Schema(description = "当前审批人姓名(指定人审批)")
  private String currentApproverName;

  @Schema(description = "优先级（0:普通，1:紧急，2:特急）")
  private Integer priority;

  @Schema(description = "关联业务ID")
  private String businessId;

  @Schema(description = "服务调用方来源")
  private String businessSource;

  @Schema(description = "调用方回调接口地址")
  private String businessCallbackUrl;

  @Schema(description = "业务信息")
  private String businessInfo;

  @Schema(description = "审批权限")
  private Boolean displayApproveStatus = false;

  private String createUser;

  private Date createTime;

  private String updateUser;

  private Date updateTime;

}

